#include <core/types.h>
#include <core/io.h>
#include <autoconf.h>
//#include <arch/at91sam926x.h>


void At91PioConfPeriA(UINT32 nPioIdx, UINT32 dwMask, int isPullUp)
{
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_ASR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_PDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_IDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + (isPullUp ? PIO_PUER : PIO_PUDR));
}

void At91PioConfPeriB(UINT32 nPioIdx, UINT32 dwMask, int isPullUp)
{
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_BSR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_PDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_IDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + (isPullUp ? PIO_PUER : PIO_PUDR));
}

void  At91PioConfInput(UINT32 nPioIdx, UINT32 dwMask, int isPullUp)
{
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_PER);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_ODR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_IDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + (isPullUp ? PIO_PUER : PIO_PUDR));
}

void  At91PioConfOutput(UINT32 nPioIdx, UINT32 dwMask, int isPullUp)
{
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_PER);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_OER);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_IDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + PIO_PUDR);
	WriteLong(dwMask, PIO_BASE(nPioIdx) + (isPullUp ? PIO_SODR : PIO_CODR));
}

